package com.tbit.uqbike.webmanager.req.tag.bind.add;

import com.tbit.uqbike.enums.CancelType;
import com.tbit.uqbike.enums.TagOperationType;
import com.tbit.uqbike.object.business.UserInfo;
import com.tbit.uqbike.webmanager.dto.TagBindDTO;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Set;

/**
 * 通过设备编号 MachineNo 添加标签 请求
 *
 *
 * @author <a href="mailto:chen.chaoxiong@tbit.com.cn">ChenChaoXiong</a>
 * @since 2024/7/12
 */
@Data
public class MachineNoBatchTagReq {

    /**
     * 品牌ID
     */
    @NotNull
    private Integer brandId;

    /**
     * 区域ID
     */
    @NotNull
    private Integer accountId;

    /**
     * 标签ID集合
     */
    @NotEmpty
    private Set<Long> tagIds;

    /**
     * 设备编号集合
     */
    @NotEmpty
    private Set<String > machineNos;

    public TagBindDTO toAddTagBindDTO(UserInfo userInfo) {
        TagBindDTO tagBindDTO = new TagBindDTO();
        tagBindDTO.setBrandId(brandId);
        tagBindDTO.setAccountId(accountId);
        tagBindDTO.setTagIds(tagIds);
        tagBindDTO.setMachineNos(machineNos);
        tagBindDTO.setUserInfo(userInfo);
        tagBindDTO.setMachineInfoType(TagOperationType.ADD_BY_MACHINE_NO.getOperationInfo());
        return tagBindDTO;
    }

    public TagBindDTO toCancelTagBindDTO(UserInfo userInfo) {
        TagBindDTO tagBindDTO = new TagBindDTO();
        tagBindDTO.setBrandId(brandId);
        tagBindDTO.setAccountId(accountId);
        tagBindDTO.setTagIds(tagIds);
        tagBindDTO.setMachineNos(machineNos);
        tagBindDTO.setUserInfo(userInfo);
        tagBindDTO.setCancelType(CancelType.MANUAL);
        tagBindDTO.setMachineInfoType(TagOperationType.CANCEL_BY_MACHINE_NO.getOperationInfo());
        return tagBindDTO;
    }
}
